package kr.hkit.myframework.db;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.InvalidPropertiesFormatException;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;

public class DBProperties {
	
	/**
	 * @Method Name  	: loadPropertis
	 * @Method Comment  :
	 * @param propertiesFile
	 * @return properties
	 */
	public static Properties loadPropertis(String propertiesFile){
		BufferedInputStream bis = null;
		Properties prop = null;
		
		try {
			bis = new BufferedInputStream(new FileInputStream(propertiesFile));
			prop = new Properties();
			prop.loadFromXML(bis);
		} catch (FileNotFoundException e) {
			System.err.print("파일이 존재하지 않음");
		} catch (InvalidPropertiesFormatException e) {
			System.err.print("유효하지 않은 파일");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bis != null)try{bis.close();bis=null;}catch(Exception e){}
		}
		return prop;
	}
	
	
	/**
	 * @Method Name  	: savePropertis
	 * 
	 * @Method Comment  : 
	 * 		String driver = "com.mysql.jdbc.Driver";
			String url = "jdbc:mysql://localhost:3306/mysql_study";
			String user = "root";
			String password = "1111";
		
			DBProperties.savePropertis("dbcon.xml", driver, url, user, password);
			
	 * @param propertiesFile "파일 경로및 파일명"
	 * @param values 1. 드라이버명 , 2. URL, 3. USER, 4. PASSWORD
	 */
	public static void savePropertis(String propertiesFile, String...values){
		BufferedOutputStream bos = null;
		Properties prop = null;
		
		try {
			bos = new BufferedOutputStream(new FileOutputStream(propertiesFile));
			prop = new Properties();
			
			prop.setProperty("DRIVER", values[0]);
			prop.setProperty("URL", values[1]);
			prop.setProperty("USER", values[2]);
			prop.setProperty("PASSWORD", values[3]);
			
			prop.storeToXML(bos, "DataBase Connection XML Property File");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bos != null)try{bos.close();bos=null;}catch(Exception e){}
		}
	}
	
	
	/**
	 * @Method Name  	: prnProperties
	 * @Method Comment  : DB연결 정보 출력
	 * @param prop : properties 파일 명 ex)dbcon.xml
	 */
	public static void prnProperties(Properties prop){
		Set<Entry<Object, Object>> setmap = prop.entrySet();
		
		for (Entry<Object, Object> propty : setmap){
			System.out.printf("%s : %s\n", propty.getKey(), propty.getValue());
		}
	}
}
